Introduction to software Engineering and software process model Software Requirements Engineering and Analysis Estimation and Scheduling Design Engineering Risks and Configuration Management Software Testing

Introduction

Nature of Software

Defining Software

Software Engineering practice

Software Engineering Principle

Software process

A Generic process Model

Defining a Framework Activity

Identifying a Task Set

Process Patterns

Process Assessment and Improvement

Prescriptive process Model

Linear Sequential Development Model / Waterfall Model

Incremental Process Model

Evolutionary Process Models

Concurrent Models

A Final Word on Evolutionary Processes

Unified Process

Aglie Software Development

Imagine you're planning a surprise birthday party for your best friend, but you're not entirely sure what they want or how to make it perfect. This uncertainty mirrors the situation described in the process pattern "RequirementsUnclear." Let's break down this pattern using our birthday party scenario to make it more relatable and understandable.


Pattern Name: RequirementsUnclear


Intent: This pattern describes an approach for handling situations where stakeholders (in our case, the party planner and the birthday person) have a general idea of what they want (a birthday party), but specific requirements (like theme, location, activities) are unclear.

Type: Phase pattern


Initial Context: Before initiating this pattern, certain conditions must be met:


1. Stakeholders identified: The party planner and the birthday person are involved.
2. Communication established: The planner can talk to the birthday person to discuss party ideas.
3. Identified problem: The planner knows they need to throw a birthday party, but details are fuzzy.
4. Initial understanding: The planner knows the general scope (a surprise party) but lacks specific requirements.


Problem: The planner wants to throw a fantastic party, but they're not sure about the theme, venue, or activities. The planner can't move forward without a clearer picture of what the birthday person wants.


SolutionJust like in software development, where you might create a prototype to clarify requirements, the planner decides to create a basic plan or prototype for the party. They'll gather some initial ideas, propose them to the birthday person, and iterate based on feedback.


Resulting Context: After implementing the solution:


1. Approved prototype: The birthday person approves a basic plan, which might include a tentative theme, venue options, and activity ideas.
2. Evolution: The party plan might evolve through further discussions and iterations, becoming more refined and closer to the final vision.
3. Discard or continue: Depending on feedback, the plan might either be finalized for execution or discarded in favor of a new approach.


Related Patterns: Other patterns related to this situation include:


  • CustomerCommunication: Ensuring open dialogue between the planner and the birthday person.
  • IterativeDesign: The process of refining and improving the party plan through feedback loops.
  • IterativeDevelopment: Similar to iterative design, but applied to the execution of the party itself.
  • CustomerAssessment: Continuously assessing the birthday person's preferences and satisfaction.
  • RequirementExtraction: Extracting specific desires and preferences from the birthday person to refine the plan.


Known Uses and Examples: Creating a prototype or initial plan is recommended when party requirements are uncertain, just as in software development when requirements are unclear.


Real-Life Example


Let's dive deeper into our birthday party scenario:


Imagine you're the party planner, and your friend loves surprises but hasn't given you much guidance on what they want for their birthday. You know you need to throw a great party, but you're feeling stuck because you don't have clear requirements.

So, you decide to use the "RequirementsUnclear" pattern:


1. Identify stakeholders: You and your friend are the main stakeholders.
2. Establish communication: You talk to your friend about general party ideas without giving away the surprise.
3. Identify the problem: You realize you lack specific details to plan the perfect party.
4. Initial understanding: You know the basics, like the date of the party and your friend's interests, but not much else.


To address this, you decide to create a prototype party plan:


Solution: You brainstorm some ideas for themes, venues, and activities, keeping them flexible for adjustments.
Result: You present these ideas to your friend, who loves the theme but suggests a different venue and adds some activity preferences.
Evolution: You tweak the plan based on their feedback, finalizing the details together.
Outcome: The party turns out to be a huge success, exactly what your friend wanted, thanks to the iterative process of refining the plan based on their input.


In this example, applying the "RequirementsUnclear" pattern helped you navigate uncertainty and plan a birthday party that delighted your friend, showcasing the effectiveness of using process patterns in real-life scenarios.

Process Patterns


Process Patterns are recurring solutions to common problems encountered during the design and implementation of processes in various fields, such as software development or project management. They provide structured approaches to handle tasks efficiently, improve productivity, and ensure quality outcomes, often by leveraging proven best practices.


Stakeholders


Stakeholders are individuals or groups who have an interest, concern, or investment in a particular project, organization, or system. They can include employees, customers, shareholders, suppliers, communities, and governments. Understanding and managing stakeholders is crucial for success as their support or opposition can significantly impact outcomes and decisions.


Project Manager


A project manager is like a captain guiding a ship. They oversee tasks, resources, and timelines to ensure a project sails smoothly from start to finish. They coordinate teams, solve problems, and keep stakeholders informed, ensuring the project reaches its destination successfully while navigating any challenges along the way.